package com.neuedu.javase.oo.basics;

import java.util.Arrays;

/***
 * 项目名称:  MyJavaSE 
 * 包：  com.neuedu.javase.oo.basics 
 * date:   2025/10/23   11:29  
 * 描述:  
 *  @author : 张金山
 *  作者博客:   https://blog.fulfill.com.cn
 */


public class Human {


    //定义属性  属性是有默认值
    /***
     * 类的属性
     *
     * 基础  默认值
     *  byte short int long    0
     *  double float  0.0
     *  char     \u0000
     *  boolean     false
     *
     *  引用类型  ： null
     *
     *  String  null
     *  数组：   null
     *
     */

    String name;
    int age;
    char gender;
    int nums[];


    //在java--class过程 编译的时候 如果没有构造参方法自动不补全一个没有参数的  构造方法
    // 如果需要调用 无参的构造方法，需要显示的声明下

    public   Human() {
//        int age  =100;
        System.out.println(age);
        System.out.println();
    }



    /**
     * 构造对象的 一个方法 称之为构造方法
     * 1 构造方法不需要写  返回类型    写上返回类型，就变成普通方法
     * 2 构造方法的名字 就是 类名
     *
     * 构造方法也可以重载
     */
    public   Human(String inputName) {
        //为了给 name属性赋值
        this.name = inputName;
    }


    /**
     * this.name 代表 实例
     * @param name
     * @param age
     */
    public Human(String name, int age){

        this.name = name ;
        this.age = age;
    }


    /**
     *   this()  代表本类的 构造方法  调用本类的构造方法 需要放到第一句话
     *
     * @param name
     * @param age
     * @param gender
     */
    public Human(String name, int age,char gender){
        this(name,age);
        this.gender = gender;

    }




    //定义方法
    public void sport(){
        System.out.println(name +" 在跑步");
    }


    public void cal(int numa ,int numb){
        System.out.println(name +" 在算数  "+numa+" + "+numb+" = "+(numa + numb));
    }



    public void paint(){
        System.out.println(name +" 在画画");
    }


    public void  sayHi(){
        System.out.println("Human{" +
                         "name='" + name + '\'' +
                    ", age=" + age +
                    ", gender=" + gender +
                    '}');
    }



}
